package model

import java.util.Iterator
import java.util.List

class Ruta {
	
	@Property val Iterator<Pais> rutaVillano
	@Property var Pais paisActual 
	@Property var Pais paisAnterior 
	@Property var Pais paisSiguiente 
	@Property var Villano villanoCulpable
	
	
	new(List<Pais> ruta,Villano v){
	 	this._rutaVillano = ruta.iterator
		this.paisAnterior = null
		this.paisActual = this.rutaVillano.next
		this.paisSiguiente = this.rutaVillano.head
		this.villanoCulpable = v
		this.paisActual.informarQueElVillanoLlego(this, this.villanoCulpable)
	}
	
	/**
	 * Proposito: Se mueve hacia el siguiente pais en la ruta.
	 */
	def siguientePais(){
		if (this.rutaVillano.size > 1) {
			this.paisAnterior = this.paisActual
			this.paisAnterior.informarQueElVillanoSeFue
			this.paisActual = this.paisSiguiente
			this.paisActual.informarQueElVillanoLlego(this, this.villanoCulpable)
			this.paisSiguiente = this.rutaVillano.next
		} else {
			this.paisActual = paisSiguiente
			this.paisActual.finalizoRuta(this.villanoCulpable)
		}
	}
	
	/*
	 * Responde si en base al pais que le pasan, debe moverse hacia adelante.
	 */
	def debeMoverse(Pais pais) {
		if(this.paisSiguiente != null)
			this.paisSiguiente.equals(pais) 
		else
			true
	}
	
	def esElUltimoPais() {
		this.paisActual.equals(this.paisSiguiente)
	}
	
	
	
		
	
	
}